package org.nuonuo.sdk.model.base;

import com.fasterxml.jackson.annotation.JsonProperty;
import org.nuonuo.sdk.model.callback.content.InvoiceRedItem;

import java.math.BigDecimal;
import java.util.List;

/**
 * @Version 1.0
 * @Author az
 * @Date 2024-05-16 10:54:17
 * @ClassName InvoiceRedConfirmItem
 * @Description
 */
public class InvoiceRedConfirmItem {
    /**
     * 红字确认单编号
     */
    private String billNo;
    /**
     * 红字确认单uuid
     */
    private String billUuid;
    /**
     * 红字确认单申请号
     */
    private String billId;
    /**
     * <pre>
     * 红字确认单状态：
     *  01 无需确认
     *  02 销方录入待购方确认
     *  03 购方录入待销方确认
     *  04 购销双方已确认
     *  05 作废（销方录入购方否认）
     *  06 作废（购方录入销方否认）
     *  07 作废（超72小时未确认）
     *  08 作废（发起方已撤销）
     *  09 作废（确认后撤销）
     *  15 申请中
     *  16 申请失败
     * </pre>
     */
    private String billStatus;
    /**
     * 描述
     */
    private String billMessage;
    /**
     * 红票流水号，若红字确认单已开红票（或已自动开红票）才会返回该值
     */
    private String invoiceSerialNum;
    /**
     * 红票订单号（开票单号），若红字确认单已开红票（或已自动开红票）才会返回该值
     */
    private String orderNo;
    /**
     * <pre>
     * 操作状态，根据操作方返回对应状态，可能为空：
     *  01 撤销中
     *  02撤销失败
     *  03 确认中
     *  04 确认失败
     * </pre>
     */
    private String requestStatus;
    /**
     * <pre>
     * 已开具红字发票标记：
     *  0 未开具
     *  1 已开具
     * </pre>
     */
    private String openStatus;
    /**
     * <pre>
     * 录入方身份：
     *  0 销方
     *  1 购方
     * </pre>
     */
    private String applySource;
    /**
     * <pre>
     * 蓝字发票票种：
     *  bs：电子发票(增值税专用发票)
     *  pc：电子发票(普通发票)
     *  es:全电纸质发票(增值税专用发票)
     *  ec:全电纸质发票(普通发票)
     * </pre>
     */
    @JsonProperty("blueInvoiceLine")
    private String invoiceLine;
    /**
     * 对应蓝票号码
     */
    private String blueInvoiceNumber;
    /**
     * 蓝字发票开票日期
     */
    private String blueInvoiceTime;
    /**
     * 申请日期
     */
    private String billTime;
    /**
     * 确认日期
     */
    private String confirmTime;
    /**
     * 销方税号
     */
    private String sellerTaxNo;
    /**
     * 销方名称
     */
    private String sellerName;
    /**
     * 购方税号
     */
    private String buyerTaxNo;
    /**
     * 购方名称
     */
    private String buyerName;
    /**
     * 冲红合计金额(不含税)
     */
    private String taxExcludedAmount;
    /**
     * 冲红合计税额
     */
    private String taxAmount;
    /**
     * <pre>
     * 冲红原因：
     *  1 销货退回
     *  2 开票有误
     *  3 服务中止
     *  4 销售折让
     * </pre>
     */
    private String redReason;
    /**
     * 申请表pdf地址（暂不支持）
     */
    private String pdfUrl;

    /**
     * 红字确认单明细信息列
     */
    @JsonProperty("detail")
    private List<InvoiceRedItem> invoiceItems;

    ///////////////////////////                        回调字段                        ///////////////////////////
    /**
     * <pre>
     * 是否自动开票：
     *  0 否
     *  1 是
     * </pre>
     */
    private String autoInvoice;
    /**
     * 含税金额
     */
    private BigDecimal taxIncludeAmount;
    /**
     * 蓝票数电票号码
     */
    private String blueElecInvoiceNumber;
    /**
     * 蓝票发票代码，数电纸票时有
     */
    private String blueInvoiceCode;
    /**
     * 销方账号
     */
    private String sellerAccount;
    /**
     * 购方银行账号
     */
    private String buyerAccount;

    /**
     * 回传地址
     */
    private String callbackUrl;
    /**
     * 开票人id
     */
    private String clerkId;
    /**
     * 部门id
     */
    private String departmentId;
    /**
     * 确认开具标志，Y：是，N：否
     */
    private String confirmInvoicedFlag;
    /**
     * 创建时间
     */
    @JsonProperty("createTime")
    private String nCreateTime;
    /**
     * 交付邮箱
     */
    private String email;
    /**
     * 交付手机
     */
    private String phone;

    private String accountStatus;
    private Boolean allRedFlag;
    @JsonProperty("id")
    private String nId;
    private Integer requestSrc;
    private String saleTaxUsage;
    private String service;
    private String taskNo;
    @JsonProperty("updateTime")
    private String nUpdateTime;
    private String vatUsage;

    public String getBillNo() {
        return billNo;
    }

    public void setBillNo(String billNo) {
        this.billNo = billNo;
    }

    public String getBillUuid() {
        return billUuid;
    }

    public void setBillUuid(String billUuid) {
        this.billUuid = billUuid;
    }

    public String getBillId() {
        return billId;
    }

    public void setBillId(String billId) {
        this.billId = billId;
    }

    public String getBillStatus() {
        return billStatus;
    }

    public void setBillStatus(String billStatus) {
        this.billStatus = billStatus;
    }

    public String getBillMessage() {
        return billMessage;
    }

    public void setBillMessage(String billMessage) {
        this.billMessage = billMessage;
    }

    public String getInvoiceSerialNum() {
        return invoiceSerialNum;
    }

    public void setInvoiceSerialNum(String invoiceSerialNum) {
        this.invoiceSerialNum = invoiceSerialNum;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public String getRequestStatus() {
        return requestStatus;
    }

    public void setRequestStatus(String requestStatus) {
        this.requestStatus = requestStatus;
    }

    public String getOpenStatus() {
        return openStatus;
    }

    public void setOpenStatus(String openStatus) {
        this.openStatus = openStatus;
    }

    public String getApplySource() {
        return applySource;
    }

    public void setApplySource(String applySource) {
        this.applySource = applySource;
    }

    public String getInvoiceLine() {
        return invoiceLine;
    }

    public void setInvoiceLine(String invoiceLine) {
        this.invoiceLine = invoiceLine;
    }

    public String getBlueInvoiceNumber() {
        return blueInvoiceNumber;
    }

    public void setBlueInvoiceNumber(String blueInvoiceNumber) {
        this.blueInvoiceNumber = blueInvoiceNumber;
    }

    public String getBlueInvoiceTime() {
        return blueInvoiceTime;
    }

    public void setBlueInvoiceTime(String blueInvoiceTime) {
        this.blueInvoiceTime = blueInvoiceTime;
    }

    public String getBillTime() {
        return billTime;
    }

    public void setBillTime(String billTime) {
        this.billTime = billTime;
    }

    public String getConfirmTime() {
        return confirmTime;
    }

    public void setConfirmTime(String confirmTime) {
        this.confirmTime = confirmTime;
    }

    public String getSellerTaxNo() {
        return sellerTaxNo;
    }

    public void setSellerTaxNo(String sellerTaxNo) {
        this.sellerTaxNo = sellerTaxNo;
    }

    public String getSellerName() {
        return sellerName;
    }

    public void setSellerName(String sellerName) {
        this.sellerName = sellerName;
    }

    public String getBuyerTaxNo() {
        return buyerTaxNo;
    }

    public void setBuyerTaxNo(String buyerTaxNo) {
        this.buyerTaxNo = buyerTaxNo;
    }

    public String getBuyerName() {
        return buyerName;
    }

    public void setBuyerName(String buyerName) {
        this.buyerName = buyerName;
    }

    public String getTaxExcludedAmount() {
        return taxExcludedAmount;
    }

    public void setTaxExcludedAmount(String taxExcludedAmount) {
        this.taxExcludedAmount = taxExcludedAmount;
    }

    public String getTaxAmount() {
        return taxAmount;
    }

    public void setTaxAmount(String taxAmount) {
        this.taxAmount = taxAmount;
    }

    public String getRedReason() {
        return redReason;
    }

    public void setRedReason(String redReason) {
        this.redReason = redReason;
    }

    public String getPdfUrl() {
        return pdfUrl;
    }

    public void setPdfUrl(String pdfUrl) {
        this.pdfUrl = pdfUrl;
    }

    public List<InvoiceRedItem> getInvoiceItems() {
        return invoiceItems;
    }

    public void setInvoiceItems(List<InvoiceRedItem> invoiceItems) {
        this.invoiceItems = invoiceItems;
    }

    public String getAutoInvoice() {
        return autoInvoice;
    }

    public void setAutoInvoice(String autoInvoice) {
        this.autoInvoice = autoInvoice;
    }

    public BigDecimal getTaxIncludeAmount() {
        return taxIncludeAmount;
    }

    public void setTaxIncludeAmount(BigDecimal taxIncludeAmount) {
        this.taxIncludeAmount = taxIncludeAmount;
    }

    public String getBlueElecInvoiceNumber() {
        return blueElecInvoiceNumber;
    }

    public void setBlueElecInvoiceNumber(String blueElecInvoiceNumber) {
        this.blueElecInvoiceNumber = blueElecInvoiceNumber;
    }

    public String getBlueInvoiceCode() {
        return blueInvoiceCode;
    }

    public void setBlueInvoiceCode(String blueInvoiceCode) {
        this.blueInvoiceCode = blueInvoiceCode;
    }

    public String getSellerAccount() {
        return sellerAccount;
    }

    public void setSellerAccount(String sellerAccount) {
        this.sellerAccount = sellerAccount;
    }

    public String getBuyerAccount() {
        return buyerAccount;
    }

    public void setBuyerAccount(String buyerAccount) {
        this.buyerAccount = buyerAccount;
    }

    public String getCallbackUrl() {
        return callbackUrl;
    }

    public void setCallbackUrl(String callbackUrl) {
        this.callbackUrl = callbackUrl;
    }

    public String getClerkId() {
        return clerkId;
    }

    public void setClerkId(String clerkId) {
        this.clerkId = clerkId;
    }

    public String getDepartmentId() {
        return departmentId;
    }

    public void setDepartmentId(String departmentId) {
        this.departmentId = departmentId;
    }

    public String getConfirmInvoicedFlag() {
        return confirmInvoicedFlag;
    }

    public void setConfirmInvoicedFlag(String confirmInvoicedFlag) {
        this.confirmInvoicedFlag = confirmInvoicedFlag;
    }

    public String getnCreateTime() {
        return nCreateTime;
    }

    public void setnCreateTime(String nCreateTime) {
        this.nCreateTime = nCreateTime;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getAccountStatus() {
        return accountStatus;
    }

    public void setAccountStatus(String accountStatus) {
        this.accountStatus = accountStatus;
    }

    public Boolean getAllRedFlag() {
        return allRedFlag;
    }

    public void setAllRedFlag(Boolean allRedFlag) {
        this.allRedFlag = allRedFlag;
    }

    public String getnId() {
        return nId;
    }

    public void setnId(String nId) {
        this.nId = nId;
    }

    public Integer getRequestSrc() {
        return requestSrc;
    }

    public void setRequestSrc(Integer requestSrc) {
        this.requestSrc = requestSrc;
    }

    public String getSaleTaxUsage() {
        return saleTaxUsage;
    }

    public void setSaleTaxUsage(String saleTaxUsage) {
        this.saleTaxUsage = saleTaxUsage;
    }

    public String getService() {
        return service;
    }

    public void setService(String service) {
        this.service = service;
    }

    public String getTaskNo() {
        return taskNo;
    }

    public void setTaskNo(String taskNo) {
        this.taskNo = taskNo;
    }

    public String getnUpdateTime() {
        return nUpdateTime;
    }

    public void setnUpdateTime(String nUpdateTime) {
        this.nUpdateTime = nUpdateTime;
    }

    public String getVatUsage() {
        return vatUsage;
    }

    public void setVatUsage(String vatUsage) {
        this.vatUsage = vatUsage;
    }
}
